package com.zjw.dao;

import com.zjw.entity.Goods;
import com.zjw.vo.GoodsDetail;

import java.sql.SQLException;
import java.util.List;

/**
 * 好物信息表(Goods)表数据库访问层
 *
 * @author 翟
 * @since 2025-04-09 08:59:18
 */
public interface GoodsDao {

    /**
     * 通过登录类型和分页展示好物列表数据
     * @param loginType 登录类型：普通用户  管理员
     * @param index 当前页(索引)
     * @param pageSize 每页显示条数
     * @return 好物列表
     * @throws SQLException
     */
    List<Goods> selectGoodsByLoginTypeAndPaging(int index , int pageSize , String loginType) throws SQLException;

    /**
     * 通过登录类型查询好物数量
     * @param loginType 登录类型：普通用户  管理员
     * @return
     * @throws SQLException
     */
    int selectGoodsCountByLoginType(String loginType) throws SQLException;

    /**
     * 通过商品id查询商品详情
     * @param goodsId 商品ID
     * @param loginType 登录类型：普通用户  管理员
     * @return 商品详情类
     * @throws SQLException
     */
    GoodsDetail selectGoodsDetailByGoodsId(int goodsId , String loginType) throws SQLException;

    /**
     * 通过商品id修改商品是否上架状态
     * @param goodsId 商品ID
     * @return
     * @throws SQLException
     */
    int updateIsOnSellByGoodsId(int goodsId) throws SQLException;

    /**
     * 添加商品
     * @param goods
     * @return
     * @throws SQLException
     */
    int insertGoods(Goods goods) throws SQLException;

    /**
     * 通过用户id分页查询用户发布的商品数量
     * @param index 当前页(索引)
     * @param pageSize 每页显示条数
     * @param user_id 用户id
     * @return List<Goods>
     * @throws SQLException
     */
    List<Goods> selectGoodsByUserIdAndPaging(int index , int pageSize , int user_id) throws SQLException;

    /**
     * 通过用户id查询用户发布的商品数量
     * @param user_id 用户ID
     * @return
     * @throws SQLException
     */
    int selectGoodsCountByUserId(int user_id) throws SQLException;
}

